<?php
class Image{
	public $water_font_size=16;
	public $water_image = 'logo.png';
	public $water_font_file ='font.ttf';
	public $water_text = '百度搜索';
	/**
	 * 缩略图处理
	 * @param  [type] $img [原图]
	 * @param  [type] $t_w [宽度]
	 * @param  [type] $t_h [高度]
	 * @return [type]      [description]
	 */
	public function thumb($file,$t_w,$t_h){
		//环境与文件检测
		if(!$this->check($file)){return false;}
		$info = getimagesize($file);
		$img_w = $info[0];//图片宽度
		$img_h = $info[1];//图片高度
		//=======获得图片裁切后的尺寸
		if($img_w /$t_w  >$img_h/$t_h){
			$img_w =$img_h/$t_h*$t_w ;
		}else{
			$img_h =$img_w/$t_w*$t_h ;
		}
		//定义画布
		$dst = imagecreatetruecolor($t_w, $t_h);
		//创建图片资源函数
		switch($info[2]){
			case 1:
				$func ="imagecreatefromgif";
				break;
			case 2:
				$func ="imagecreatefromjpeg";
				break;
			case 3:
				$func ="imagecreatefrompng";
				break;
		}
		$img = $func($file);
		//生成缩略图
		imagecopyresized ( $dst ,$img,0,0, 0,0,$t_w ,$t_h,$img_w,$img_h);
		// header('Content-type:image/jpeg');
		// imagejpeg($dst);
		$func = str_replace('/','', $info['mime']);
		$d = pathinfo($file);
		$toFile = $d['dirname'].'/'.$d['filename'].'_thumb.'.$d['extension'];
		return $func($dst,$toFile);
	}
	/**
	 * 检测GD与文件
	 * @return [type] [description]
	 */
	private function check($file){
		return extension_loaded('GD') 
		&&  is_file($file) && getimagesize($file);
	}
	/**
	 * 图片加水印
	 * 改变公有属性$water_text指定水印文字
	 * 改变公有属性$water_image指定水印图片
	 * @param  string  $file [原文件]
	 * @param  integer $type 1 文字水印 2 图片
	 * @return   boolean
	 */
	public function water($file,$type=1,$pos=9){ 
		//检测环境
		if(!$this->check($file))return false;
		//创建图片资源
		$info = getimagesize($file);
		switch($info[2]){
			case 1:
				$func = "imagecreatefromgif";
			break;
			case 2:
				$func = "imagecreatefromjpeg";
			break;
			case 3:
				$func = "imagecreatefrompng";
			break;
		}
		//创建原图片资源
		$img = $func($file);
		if($type==1){
			//文字水印
			$box = imagettfbbox ($this->water_font_size ,
				0,$this->water_font_file ,$this->water_text );
			$text_w = $box[2]-$box[0];//文字宽度
 			$text_h = abs($box[5])-$box[1];//文字高度
 			$water_pos = $this->get_pos(imagesx($img),
 				imagesy($img),$text_w,$text_h,$pos);
 			//水印文字颜色
 			$color = imagecolorallocate($img, 255,0,0);
 			//写入水印文字
 			imagettftext ($img ,$this->water_font_size , 0 , $water_pos[0],$water_pos[1]  ,$color ,$this->water_font_file, 
 				$this->water_text);
		}else{
			//图片水印
			$info = getimagesize($this->water_image);
			//水印图片资源
			$src_im = imagecreatefrompng($this->water_image);
			 $water_pos = $this->get_pos(imagesx($img),
 				imagesy($img), $info[0],$info[1],$pos);
			imagecopymerge($img, $src_im, $water_pos[0], 
				$water_pos[1], 0, 0, $info[0], $info[1], 80);
		}
		// header("Content-type:image/jpeg");
		// imagejpeg($img);exit;
		//图片储存函数
		$func = str_replace('/','', $info['mime']);
		return $func($img,$file);
	}
	/**
	 * 获水印的位置（图片 与文字都可以操作）
	 * @param  [type] $img_w   [原图宽度]
	 * @param  [type] $img_h   [原图的高度]
	 * @param  [type] $water_w [水印宽度]
	 * @param  [type] $water_h [水印高度]
	 * @return array
	 */
	private function get_pos($img_w,$img_h ,$water_w,$water_h,$pos){
		//水印坐标
		$x =$y=20;
		switch($pos){
			case 1:
				break;
			case 2:
				$x = ($img_w-$water_w)/2;
				break;
			case 3:
				break;
			case 4:
				break;
			case 5:
				$x = ($img_w-$water_w)/2;
				$y = ($img_h-$water_h)/2;
				break;
			case 6:
				break;
			case 7:
				break;
			case 8:
				break;
			case 9:
				$x = $img_w-$water_w-10;
				$y = $img_h-$water_h-10;
		}
		return array($x,$y);
	}
}